//定义关于counter的store
import {defineStore} from 'pinia'
import {Service} from "../requests/index.ts";
import {message} from "ant-design-vue";
import project from "./project.js";

/*defineStore 是需要传参数的，其中第一个参数是id，就是一个唯一的值，
简单点说就可以理解成是一个命名空间.
第二个参数就是一个对象，里面有三个模块需要处理，第一个是 state，
第二个是 getters，第三个是 actions。
*/
const useNode = defineStore("node",{
    state:() => ({
        nodeList: [],//节点列表
        currentNode: {},//当前节点名称
    }),

    getters: {
        //基本使用
        nodeNameListSelect(state) {
            return state.nodeList.map((item) => {
                return {value: item.nodeName, label: item.nodeName}
            })
        },
    },

    actions: {
        //基本使用
        selectCurrentNode(name) {
            return this.currentNode.name = name
        },
        //获取节点列表
        async getNodeList(projectName) {

            const res=await Service.getNodesListUsingGet(projectName)
            if (res.respCode === 200) {
                console.log("getNodeList",res)
                this.nodeList = res.data
            }else {
                message.error(res.message);
            }
            return res.data
        },
        //添加单个节点
        async addSingleNode(projectName,node) {
            console.log("node",node)
            const res=await Service.upLoadSingNodeUsingPost(projectName,node)
            // console.log("res",res)
            if (res.respCode === 200) {
                this.nodeList= res.data;
                return res.data
            }else {
                message.error(res.message);
            }
            // console.log("addSingleNode",this.nodeList)
            return this.nodeList
        },

        //节点文件上传
        async uploadNodeFile(file,projectName) {
            // console.log("node",node)
            const res=await Service.upLoadNodeUsingPost(file,projectName)
            // console.log("uploadNodeFile",file)
            if (res.respCode === 200) {
                this.nodeList= res.data;
                message.success(file.name+"上传成功")
                return res.data
            }else {
                message.error(res.message);
            }
            // console.log("addSingleNode",this.nodeList)
            return this.nodeList
        },
        //删除节点
        async delSingleNode(projectName,name) {
            const res=await Service.deleteNodeUsingDelete(projectName,name)
            console.log("deleteNodeUsingDelete",res)
            if (res.respCode === 200) {
                this.nodeList = res.data
                return res.data
            }else {
                message.error(res.message);
            }
            return this.nodeList
        },

        //修改单个节点
        async updateSingleNode(projectName,id,node) {
            const res=await Service.modifyNodeUsingPut(projectName,id,node)
            console.log("updateSingleNode",res)
            if (res.respCode === 200) {
                this.nodeList = res.data
                return res.data
            }else {
                message.error(res.message);
            }
            return this.nodeList
        }
    }
})

//暴露这个node模块
export default useNode
